package letcode.oneQuestionPerDay._202003._20200302;

import letcode.util.ListNode;

import java.util.ArrayList;
import java.util.List;

/*
反转链表   自己尝试的
 */
public class _20200302_ReverseLinkedList {
    private static ListNode oldhead;
    public static void main(String[] args) {
        
        oldhead=new ListNode(1);
        oldhead.next=new ListNode(2);
        oldhead.next.next=new ListNode(3);
        oldhead.next.next.next=new ListNode(4);
        oldhead.next.next.next.next=new ListNode(5);

        ListNode head=reverseList(oldhead);
        System.out.println(head.val);
        System.out.println(head.next.val);
        System.out.println(head.next.next.val);
        System.out.println(head.next.next.next.val);
        System.out.println(head.next.next.next.next.val);
    }
    //提供方法
    public static ListNode reverseList(ListNode head) {
        List<Integer> list=new ArrayList();
        ListNode first=head.next;
        list.add(first.val);
        while (first.next!=null){
            ListNode next=first.next;
            list.add(next.val);
            first=first.next;
        }
        System.out.println(list);
        //反转链表
        ListNode reverseHead=new ListNode(list.get(list.size()-1));
        ListNode temp=reverseHead;
        for (int i = 1; i < list.size(); i++) {
            temp.next= new ListNode(list.get(list.size()-1-i));
            temp=temp.next;
        }

        return reverseHead;
    }
}

/*
反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题？
 */